"""
演示tuple元组的定义和操作：元组是只读的，是不可修改的
"""


# 定义元组
t1 = (1, "hello", True)
t2 = ()
t3 = tuple()
print(f"t1的类型是：{type(t1)},内容是：{t1}")
print(f"t2的类型是：{type(t2)},内容是：{t2}")
print(f"t3的类型是：{type(t3)},内容是：{t3}")


# 定义单个元素的元组：必须后面有逗号，否则类型为str
t4 = ("hello",)
print(f"t4的类型是：{type(t4)},内容是：{t4}")


# 元组的嵌套
t5 = ((1, 2, 3), (4, 5, 6))
print(f"t5的类型是：{type(t5)},内容是：{t5}")

# 下标索引去取出内容
num = t5[1][2] # 取出的为6
print(f"从嵌套元组中取出的数据是：{num}")


# 元组的操作：index查找方法
t6 = ("传智教育", "黑马程序员", "python")
index = t6.index("黑马程序员")
print(f"在元组t6中查找黑马程序员的下标是：{index}")


# 元组的操作：count统计方法
t7 = ("传智教育", "黑马程序员", "黑马程序员", "黑马程序员", "python")
num = t7.count("黑马程序员")
print(f"在元组t7中统计黑马程序员的数量有：{num}个")


# 元组的操作：len函数统计元组元素数量
t8 = ("传智教育", "黑马程序员", "黑马程序员", "黑马程序员", "python")
num = len(t8)
print(f"t8元组中的元素有：{num}个")

# 元组的遍历：while
index = 0
while index < len(t8):
    print(f"元组的元素有：{t8[index]}")
    # 至关重要
    index += 1

# 元组的遍历：for
for i in t8:
    print(f"元组的元素有：{i}")


# 修改元组的内容：会报错
# t8 = "itcast"

# 定义一个元组：可以修改元组中嵌套内部列表的内容
t9 = (1, 2, ["itheima", "itcast"])
t9[2][0] = "黑马程序员"
t9[2][1] = "传智教育"
print(f"t9的内容是：{t9}")


"""
演示以数据容器的角色，学习字符串的相关操作：字符串也不能被修改，也是只读的
"""

my_str = "itheima and itcast"
# 通过下标索引取值
value = my_str[2]
value2 = my_str[-16]
print(f"从字符串{my_str}取下标为2的元素，值是：{value}，取下标为-16的元素。值是：{value2}")
# 错误示范
# my_str[2] = "H"
# index方法
value = my_str.index("and")
print(f"在字符串{my_str}中查找and，其起始下标是：{value}")

# replace方法
new_my_str = my_str.replace("it", "程序")
print(f"将字符串{my_str}，进行替换后得到：{new_my_str}")

# split方法  按照字符切割
my_str = "hello python itheima itcast"
my_str_list = my_str.split(" ")
print(f"将字符串{my_str}进行split切分后得到：{my_str_list}，类型是：{type(my_str_list)}")

# strip方法  去除前后空格
my_str = "   itheima and itcast   "
new_my_str = my_str.strip() # 不传入参数，去出首尾空格
print(f"字符串{my_str}被strcip后，结果：{new_my_str}")

my_str = "12itheima and itcast21"
new_my_str = my_str.strip("12")
print(f"字符串{my_str}被strcip('12')后，结果：{new_my_str}")

# 统计字符串中某字符串的出现次数
my_str = "itheima and itcast"
count = my_str.count("it")
print(f"字符串{my_str}中it出现的次数是：{count}")
# 统计字符串的长度,len
num = len(my_str)
print(f"字符串{my_str}的长度是：{num}")


# 练习案例：分割字符串

my_str = "itheima itcast boxuegu"

count = my_str.count("it")
print(f"字符串my_str内有{count}个it")
new_my_str = my_str.replace(" ", "|")
print(f"{my_str}替换之后为：{new_my_str}")
my_list = new_my_str.split("|")
print(f"{new_my_str}切割后变成：{my_list}")